""" // 给定一个整数数组和一个整数 k，判断数组中是否存在两个不同的索引 i 和 j，使得 nums [i] = nums [j]，并且 i 和 j 的差的 绝对值 至多为 k。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/contains-duplicate-ii
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。 """


from typing import List


class Solution:
    def containsNearbyDuplicate(self,nums:List[int],k:int)->bool:
        d = {}
        for i in range(len(nums)):
            if nums[i] in d:
                if (i-d[nums[i]])<=k:
                    return True
                else:
                    d[nums[i]]=i
            else:
                d[nums[i]] = i
        return False

if __name__=='__main__':
    nums=[1,2,3,1]
    k=3
    s = Solution
    print(s.containsNearbyDuplicate(s,nums,k))